package woaini.fenger.core.bot.event.message.impl;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import woaini.fenger.core.bot.event.Segment;

import java.io.Serializable;

/**
 * 录制 <a
 * href="https://github.com/botuniverse/onebot-11/blob/master/message/segment.md#%E8%AF%AD%E9%9F%B3">语音</a>
 *
 * @see Record
 * @author yefeng {@code @Date} 2023-05-16 16:50:39
 */
@Getter
@Setter
public class Record extends Segment implements Serializable {

  private Data data;

  public Record(String file) {
    super("record");
    this.data = new Data(file);
  }
  public String getFilePath() {
    return data.getFile().startsWith("file") ? data.getFile().replace("file://","") : null;
  }
  public String getFileUrl() {
    return data.getFile().startsWith("http") ? data.getFile() : null;
  }
  public String getBase64() {
    return data.getFile().startsWith("base64") ? data.getFile() : null;
  }
  @NoArgsConstructor
  @lombok.Data
  public static class Data implements Serializable {
    /** 快取 只在通过网络 URL 发送时有效，表示是否使用已缓存的文件，默认 1 */
    boolean cache = true;

    /** 是否通过代理发送文件 默认 0 */
    boolean proxy = false;

    /**
     * @see Long 超时时间 发送时有用 默认没用
     */
    Long timeout;

    /**
     * @see String 文件 绝对路径，例如 file:///C:\\Users\Richard\Pictures\1.png，格式使用 file URI 网络 URL，例如
     *     http://i1.piimg.com/567571/fdd6e7b6d93f1ef0.jpg Base64 编码，例如
     *     base64://iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAAKElEQVQ4EWPk5+RmIBcwkasRpG9UM4mhNxpgowFGMARGEwnBIEJVAAAdBgBNAZf+QAAAAABJRU5ErkJggg==
     */
    private String file;

    /**
     * @see boolean 是否变身
     */
    private boolean magic = false;

    /**
     * @see String URL 图片访问地址 只有接收的时候有用
     */
    private String url;

    public Data(String file, boolean magic) {
      this.file = file;
      this.magic = magic;
    }

    public Data(String file) {
      this.file = file;
    }
  }
}
